package com.cn.chaomeng.service;

import com.cn.chaomeng.model.Food;
import com.cn.chaomeng.model.Foodtype;
import com.cn.chaomeng.vo.BootstrapTableVo;
import com.cn.chaomeng.vo.table.FoodsTable;

import java.util.List;

/**
 * @author LYJ
 *         Created by Administrator on 2018/2/28 0028.
 */
public interface IFoodsService{

    /**
     * 获取商品分类
     * @return 商品分类
     */
    List<Foodtype> selectFoodType();

    /**
     * 通过id获取商品分类
     * @param id id
     * @return 商品分类
     */
    Foodtype selectFoodTypeById(Integer id);

    /**
     * 通过分类名获取商品分类
     * @param name 分类名
     * @return 商品分类
     */
    Foodtype selectFoodTypeByName(String name);

    /**
     * 通过主键添加商品分类
     * @param foodtype 商品分类
     * @return 是否修改成功
     */
    boolean insertFoodType(Foodtype foodtype);

    /**
     * 通过主键修改商品分类
     * @param foodtype 商品分类
     * @return 是否修改成功
     */
    boolean updateFoodTypeById(Foodtype foodtype);

    /**
     * 通过主键删除商品分类
     * @param id 商品分类
     * @return 是否修改成功
     */
    boolean deleteFoodTypeById(Integer id);

    /**
     * 查询商品表数据数量
     * @return 商品数量
     */
    int selectCount();

    /**
     * 获取商品信息
     * @param id id
     * @return 商品信息
     */
    Food selectById(Integer id);

    /**
     * 获取商品信息
     * @param ids ids
     * @return 商品信息
     */
    List<Food> selectByIds(List<Integer> ids);

    /**
     * 获取商品数量
     * @param typeId typeId
     * @return 商品数量
     */
    int selectCountByTypeid(Integer typeId);

    /**
     * 分页获取商品信息
     * @param offset 偏移量
     * @param limit 数据量
     * @return 商品信息
     */
    List<Food> selectPage(Integer offset, Integer limit);

    /**
     * 通过主键添加商品
     * @param food 商品
     * @return 是否修改成功
     */
    boolean insert(Food food);

    /**
     * 通过主键修改商品
     * @param food 商品
     * @return 是否修改成功
     */
    boolean updateById(Food food);

    /**
     * 将某分类下的所有商品修改为指定分类
     * @param typeId 要转移的商品的分类id
     * @param targetTypeId 指定分类id
     * @return 是否转移成功
     */
    boolean updateTypeIdByTypeId(Integer typeId, Integer targetTypeId);

    /**
     * 通过主键删除商品
     * @param id 商品id
     * @return 是否修改成功
     */
    boolean deleteById(Integer id);

    /**
     * 分页获取商品信息vo
     * @param where 条件
     * @param foodTypeId 分类
     * @param offset 偏移量
     * @param limit 数据量
     * @return 商品信息vo
     */
    BootstrapTableVo getFoodsTable(String where,Integer foodTypeId, Integer offset, Integer limit);

    /**
     * 获取商品分类信息vo
     * @return 分类信息
     */
    BootstrapTableVo getFoodTypeTable();

    /**
     * 获取商品销量信息vo
     * @return 商品销量
     */
    BootstrapTableVo getFoodSalesTable();

}
